package Dominio;
import Persistencia.AgenteBD;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

public class Venta {
	private int id;
	private int articulo;
	private int cantidad;
	private float precioUnidad;
	private int usuario;
	private int devueltos;
	private Pago pago;
	
	public Venta() {
		super();
	}

	public Venta(int articulo, int cantidad, float precioUnidad,
			int usuario, Pago pago) {
		super();
		this.articulo = articulo;
		this.cantidad = cantidad;
		this.precioUnidad = precioUnidad;
		this.usuario = usuario;
		this.pago = pago;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getArticulo() {
		return articulo;
	}

	public void setArticulo(int articulo) {
		this.articulo = articulo;
	}

	public int getCantidad() {
		return cantidad;
	}

	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	public float getPrecioUnidad() {
		return precioUnidad;
	}

	public void setPrecioUnidad(float precioUnidad) {
		this.precioUnidad = precioUnidad;
	}

	public int getUsuario() {
		return usuario;
	}

	public void setUsuario(int usuario) {
		this.usuario = usuario;
	}

	public Pago getPago() {
		return pago;
	}

	public void setPago(Pago pago) {
		this.pago = pago;
	}
	public static Venta consultarVenta(int id){
		Venta v=AgenteBD.consultarVentaBD(id);
		return v;
	}
	public static List<Venta> consultarVentasPago(int idPago){
		Pago p = AgenteBD.consultarPagoBD(idPago);
		List<Venta> lv=AgenteBD.consultarVentasPagoBD(p);
		return lv;
	}


	
	public static List<Venta> consultarVentasCliente(int dni){
		LinkedList<Venta> lv=new LinkedList<Venta>();
		//Consultamos los pagos del cliente
		try {
			List<Pago> lp=AgenteBD.consultarPagosClienteBD(dni);
			for (int i = 0; i < lp.size(); i++) {
				lv.addAll(AgenteBD.consultarVentasPagoBD(lp.get(i)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lv;
	}
	
	public static List<Venta> consultarVentasClienteFechas(int dni,Date fecha_ini,Date fecha_fin){
		LinkedList<Venta> lv=new LinkedList<Venta>();
		//Consultamos los pagos del cliente
		try {
			List<Pago> lp=AgenteBD.consultarPagosClienteFechasBD(dni, fecha_ini, fecha_fin);
			for (int i = 0; i < lp.size(); i++) {
				lv.addAll(AgenteBD.consultarVentasPagoBD(lp.get(i)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lv;
	}
	
	public static List<Venta> consultarVentasFechas(Date fecha_ini,Date fecha_fin){
		LinkedList<Venta> lv=new LinkedList<Venta>();
		//Consultamos los pagos del cliente
		try {
			List<Pago> lp=AgenteBD.consultarPagosFechasBD(fecha_ini, fecha_fin);
			for (int i = 0; i < lp.size(); i++) {
				lv.addAll(AgenteBD.consultarVentasPagoBD(lp.get(i)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lv;
	}
	
	public static List<Venta> consultarVentas(){
		List<Venta> lv=AgenteBD.consultarVentasBD();
		return lv;
	}
	public static int crearVenta(int id, int art, int cant, float prec,
			int usu, Pago pago){
		int res=0;
		Venta v= new Venta(art,cant,prec,usu,pago);
		res=AgenteBD.crearVentaBD(v);
		return res;
	}

	public int getDevueltos() {
		return devueltos;
	}

	public void setDevueltos(int devueltos) {
		this.devueltos = devueltos;
	}
	public static int efectuarVenta(String [][] m,int dni,int tipoPago,int usuario,float totalEuros){
		int res=0;
		
		//TODO DESCUENTOS A SOCIOS
		
		res=AgenteBD.efectuarVentaBD(m,dni,tipoPago,usuario,totalEuros);
		return res;
	}

}
